package cn.com.surker.production.entity;

import cn.com.surker.base.BaseEntity;
import cn.com.surker.enums.system.IsAutoEnum;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 生产退转料处理表,此表为所有退剩转的操作记录表
 * 如有退料则记录操作步骤为:1,退砼单:2:退砼操作处理
 * </p>
 *
 * @author admin
 * @since 2024-09-26
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("production_invoice_handle")
public class InvoiceHandle extends BaseEntity implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 标识
	 */
	@TableId(value = "id", type = IdType.AUTO)
	private Long id;

	/**
	 * 操作源发货单
	 *
	 */
	private Long sourceInvoiceId;

	/**
	 * 操作源站点
	 */
	private Long sourceOrgId;

	/**
	 * 转出发货单,如果是作废,则没有转出发货单
	 */
	private Long targetInvoiceId;

	/**
	 * 本站转为本站,跨站转为外站
	 */
	private Long targetOrgId;

	/**
	 * 处理方式,关联枚举 ShipTypeEnum
	 */
	private Integer operateType;

	/**
	 * 如果是转料操作,则表示分料类型,关联枚举:TranTypeEnum
	 */
	private Integer tranType;

	/**
	 * 退料类型,0:站内退回;1:站外退回;关联枚举BackTypeEnum
	 */
	private Integer reType;

	/**
	 * 操作方量
	 * 流入到该发货单的方量(比如转入,或者作废)
	 * operateStere和expectStere的区别为operateStere表示实际存在操作的方量,expectStere表示理论方量
	 */
	private Double operateStere;

	/**
	 * 分料过磅调度预期的方量,如果是退料,表示施工方退回的方量
	 * 20250403 更新施工方退回方量由生产内业在生产审核中操作,疑似两个字段重复,剔除此字段
	 */
	@Deprecated
	private Double expectStere;

	/**
	 * 过磅方量(如果是分料,则表示实际的方量)
	 */
	private Double weightStere;

	/**
	 * 过磅时间,如果是退料,则表示退回时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date weightTime;

	/**
	 * 过磅id,如果有过磅
	 */
	private Long weightId;

	/**
	 * 父级id,比如一次退料分了两条操作记录,则这两条操作记录的父级id为退料记录id
	 */
	private Long pid;

	/**
	 * 审核状态
	 */
	private Integer examineStatus;

	/**
	 * 审核人
	 */
	private Long examineUser;

	/**
	 * 审核人名
	 */
	private String examineUserName;

	/**
	 * 审核时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date examineTime;

	/**
	 * 是否计算工作量
	 */
	private Integer isWork;

	/**
	 * 本数据是否自动录入,仅仅指录入,后续修改不操作
	 * 关联枚举:IsAutoEnum,0自动;1手动
	 */
	private Integer isAuto;

}
